<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8" />
    <title>HTML5Course - 梦幻雪冰</title>
    <link rel="stylesheet" type="text/css" href="http://css.h5course.cn/reset-1.0.0.css" />
    <script src="http://js.h5course.cn/jquery-1.11.3.min.js" type="text/javascript"></script>
    <style type="text/css">
        .wrap {
            position: relative;
            width: 800px;
            height: 3000px;
            padding-top: 200px;
            margin: 0 auto;
        }
        .moudel > h2 {
            height: 80px;
            line-height: 80px;
            font-size: 40px;
            text-align: center;
            background-color: skyblue;
        }
        .moudel > p {
            font-size: 20px;
            line-height: 28px;
            text-indent: 2em;
            text-align: justify;
        }
        /*模块导航*/
        .moudel-nav {
            position: absolute;
            right: 0;
            top: 0;
        }
        .moudel-nav div {
            position: absolute;
            right: 40px;
            top: 220px;
            z-index: 2;
            height: 200px;
            border-left: 1px dotted #ddd;
            background-color: red;
        }
        .moudel-nav li {
            position: absolute;
            z-index: 3;
            right: 20px;
            width: 40px;
            height: 40px;
            background-color: #58c648;
            line-height: 40px;
            color: white;
            text-align: center;
            cursor: pointer;
            border-radius: 50%;
        }
    </style>
</head>
<body>
    <div class="wrap">
        <div class="moudel">
            <h2>梦幻雪冰（微信：cnb718747239）</h2>
            <p>梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰</p>
        </div>
        <div class="moudel">
            <h2>梦幻雪冰（微信：cnb718747239）</h2>
            <p>梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰梦幻雪冰</p>
        </div>
        <div class="moudel">
            <h2>HTML5学堂</h2>
            <p>HTML5学堂HTML5学堂HTML5学堂HTML5学堂HTML5学堂HTML5学堂HTML5学堂HTML5学堂HTML5学堂HTML5学堂HTML5学堂HTML5学堂HTML5学堂HTML5学堂HTML5学堂HTML5学堂HTML5学堂HTML5学堂HTML5学堂HTML5学堂HTML5学堂HTML5学堂HTML5学堂HTML5学堂HTML5学堂HTML5学堂HTML5学堂HTML5学堂HTML5学堂HTML5学堂HTML5学堂HTML5学堂HTML5学堂HTML5学堂HTML5学堂HTML5学堂HTML5学堂HTML5学堂HTML5学堂HTML5学堂HTML5学堂HTML5学堂HTML5学堂HTML5学堂HTML5学堂HTML5学堂HTML5学堂HTML5学堂HTML5学堂HTML5学堂HTML5学堂HTML5学堂HTML5学堂HTML5学堂HTML5学堂HTML5学堂HTML5学堂HTML5学堂HTML5学堂HTML5学堂HTML5学堂HTML5学堂HTML5学堂HTML5学堂HTML5学堂HTML5学堂HTML5学堂HTML5学堂HTML5学堂HTML5学堂HTML5学堂HTML5学堂HTML5学堂HTML5学堂HTML5学堂HTML5学堂HTML5学堂HTML5学堂HTML5学堂HTML5学堂HTML5学堂HTML5学堂HTML5学堂HTML5学堂HTML5学堂HTML5学堂HTML5学堂HTML5学堂HTML5学堂HTML5学堂HTML5学堂HTML5学堂HTML5学堂HTML5学堂HTML5学堂HTML5学堂</p>
        </div>
        <div class="moudel">
            <h2>什么是HTML5</h2>
            <p>狭义广义技术概括狭义广义技术概括狭义广义技术概括狭义广义技术概括狭义广义技术概括狭义广义技术概括狭义广义技术概括狭义广义技术概括狭义广义技术概括狭义广义技术概括狭义广义技术概括狭义广义技术概括狭义广义技术概括狭义广义技术概括狭义广义技术概括狭义广义技术概括狭义广义技术概括狭义广义技术概括狭义广义技术概括狭义广义技术概括狭义广义技术概括狭义广义技术概括狭义广义技术概括狭义广义技术概括狭义广义技术概括狭义广义技术概括狭义广义技术概括狭义广义技术概括狭义广义技术概括狭义广义技术概括狭义广义技术概括狭义广义技术概括狭义广义技术概括狭义广义技术概括狭义广义技术概括狭义广义技术概括狭义广义技术概括狭义广义技术概括狭义广义技术概括狭义广义技术概括狭义广义技术概括狭义广义技术概括狭义广义技术概括狭义广义技术概括狭义广义技术概括狭义广义技术概括狭义广义技术概括狭义广义技术概括狭义广义技术概括狭义广义技术概括狭义广义技术概括狭义广义技术概括狭义广义技术概括狭义广义技术概括狭义广义技术概括狭义广义技术概括狭义广义技术概括狭义广义技术概括狭义广义技术概括狭义广义技术概括狭义广义技术概括狭义广义技术概括狭义广义技术概括狭义广义技术概括</p>
        </div>
        <div class="moudel">
            <h2>前端框架</h2>
            <p>zepto、Swiper、jQuery、Bootstrap等zepto、Swiper、jQuery、Bootstrap等zepto、Swiper、jQuery、Bootstrap等zepto、Swiper、jQuery、Bootstrap等zepto、Swiper、jQuery、Bootstrap等zepto、Swiper、jQuery、Bootstrap等zepto、Swiper、jQuery、Bootstrap等zepto、Swiper、jQuery、Bootstrap等zepto、Swiper、jQuery、Bootstrap等zepto、Swiper、jQuery、Bootstrap等zepto、Swiper、jQuery、Bootstrap等zepto、Swiper、jQuery、Bootstrap等zepto、Swiper、jQuery、Bootstrap等zepto、Swiper、jQuery、Bootstrap等zepto、Swiper、jQuery、Bootstrap等zepto、Swiper、jQuery、Bootstrap等zepto、Swiper、jQuery、Bootstrap等zepto、Swiper、jQuery、Bootstrap等zepto、Swiper、jQuery、Bootstrap等zepto、Swiper、jQuery、Bootstrap等zepto、Swiper、jQuery、Bootstrap等zepto、Swiper、jQuery、Bootstrap等zepto、Swiper、jQuery、Bootstrap等zepto、Swiper、jQuery、Bootstrap等zepto、Swiper、jQuery、Bootstrap等zepto、Swiper、jQuery、Bootstrap等zepto、Swiper、jQuery、Bootstrap等zepto、Swiper、jQuery、Bootstrap等zepto、Swiper、jQuery、Bootstrap等zepto、Swiper、jQuery、Bootstrap等zepto、Swiper、jQuery、Bootstrap等zepto、Swiper、jQuery、Bootstrap等zepto、Swiper、jQuery、Bootstrap等</p>
        </div>
    </div>
    <div class="moudel-nav">
        <ul>
            <li>1</li>
            <li>2</li>
            <li>3</li>
            <li>4</li>
            <li>5</li>
        </ul>
        <div></div>
    </div>
    <script type="text/javascript">
        // 动态控制li的定位布局
        var wrap  = $(".wrap");
        var model = $(".moudel");
        var titArr = $(".moudel > h2");
        var navArr = $(".moudel-nav li");
        var dot = $(".moudel-nav > div");
        var titLen = titArr.length;
        var liSize = navArr.eq(0).height();
        var ls = window.localStorage;

        // 初始化布局
        function navLayout() {
            if(!ls.getItem("top")) {
                ls.setItem("top", 0);
            } else {
                $("html, body").stop().animate({
                    "scrollTop": ls.getItem("top")
                }, 500)
            }

            for (var i = 0; i < titLen; i++) {
                var temp = titArr.eq(i);
                navArr.eq(i).css({
                    "top": (temp.offset().top + (navArr.eq(0).height() / 2)) + "px"
                });
            };
        }navLayout();

        function scrollNav() {
            var count = 0;

            // 实现滚动切换定位布局
            $(window).scroll(function() {
                winTop = $(window).scrollTop();
           
                ls.setItem("top", winTop);

                for (var i = 0; i < titLen; i++) {
                    if (winTop + (i * liSize) >= (titArr.eq(i).offset().top)) {
                        navArr.eq(i).css({
                            "position": "fixed",
                            "top": i * liSize + "px",
                            "right": "20px",
                            "background-color": "#ddd"
                        })
                        navArr.eq(i).attr("statue", "close");
                    } else if(winTop + (i * liSize) <= (titArr.eq(i).offset().top)) {
                        navArr.eq(i).css({
                            "position": "absolute",
                            "top": (titArr.eq(i).offset().top + (navArr.eq(0).height() / 2)) + "px",
                            "right": "20px",
                            "background-color": "#58c648"
                        })
                        navArr.eq(i).attr("statue", "open");
                    }   
                };
            });            
        }scrollNav();

        // 内容区域实现滚动
        navArr.click(function() {
            var _this = $(this);

            if (_this.attr("statue") == "close") {
                var winStop = titArr.eq($(this).index()).offset().top;

                $("html, body").stop().animate({
                    "scrollTop": winStop
                }, 500, function() {
                    _this.css({
                        "background-color": "#58c648"
                    });        
                });                
            };
        });
        // hover处理
        navArr.hover(function() {
            $(this).css({
                "background-color": "#58c648"
            });
        }, function() {
            $(this).css({
                "background-color": "#ddd"
            });
        });

        // 虚线的处理
        function dottedOpt() {
            var sum = 0;

            for (var i = 0; i < titLen - 1; i++) {
                sum += model.eq(i).height();
            };

            dot.css({
                height: sum + "px"
            });
        }dottedOpt();
    </script>
</body>
</html>